본문 바로가기

개발64

ListView에 EditText를 넣을때 반드시 살펴봐야 할점 설정 페이지를 만들때 ListView로 EditText를 넣고 싶은 유혹에 빠진다 하지만 ListView의 특성상 사실 EditText는 적합하지 않다. ListView는 각각의 row뷰를 재사용하여 메모리를 아끼기 때문에 EditText의 변경값을 일일이 저장해 두었다가 다시 불려줘야 한다. 그리고 이때 진짜 주의할게 하나 있다. 변경 리스너의 중복을 방지하는 것이다. 반드시 재사용 뷰의 예전 리스너를 지워줘야 한다. 안그러면 예전 목록들과 뒤죽박죽 되버린다. 이해를 돕기 위해 리스너를 지우지 않았을때와 지웠을때도 비교해 보았다. public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstan.. 2017. 9. 11.
부등호 없는 부등식 소스를 짜보자 반복적으로 또는 사용자 임의로 부등식 비교를 할때 일일이 부등호를 넣어야 하는 불편이 있다. 예를 들어 int a = 1, b = 5; String sign = "")) { return a > b; } else if (sign.equels(">=")) { return a >= b; } 역시 소스가 깔끔하지 않다. 간단한 수식을 이용해 다음과 같이 해보자. //부등식 객체 클래스 public static class Compare { private int mA, mB; private boolean mRight, mEquel; public Compare(int a, int b, boolean right, boolean equel) { mA = a; mB = b; mRight = right; mEquel = e.. 2017. 6. 27.
UIButton 이미지를 손쉽게 정렬하자~ 아이폰 Swift에서 UIButton 안의 이미지를 원하는 위치에 두려면 Edge Inset을 이용하여 좌우상하에 여백을 줘야 한다 여간 귀찮고 불편한 일이 아닐 수 없다 그래서 좀 더 편하게 이미지를 옮기는 방법을 소개한다 원리는 무지 간단하다 Edge Inset를 가로,세로 기준으로 이미지 크기와 함께 각각 계산해 주면 된다 왼쪽 정렬 (L: 왼쪽 여백, R: 오른쪽 여백, M: 여백, IW: 이미지 너비, BW: 버튼 너비) 가운데 정렬 이 두가지 경우만 이용하면 나머지 정렬도 모두 가능하다 코딩하면 다음과 같다 class ImageButton: UIButton { //가로 정렬 기준 (-1: 왼쪽, 0: 가운데, 1: 오른쪽) @IBInspectable var horizontal: Int = 0 .. 2017. 5. 30.
UIView에 동적으로 버튼을 넣을때 크기를 같게 맞출려면? 안드로이드에서는 layout_weight 로 쉽게 하위 뷰들의 크기를 맞출 수 있다 예를 들어 버튼을 넣는다면 버튼에 layout_weight=1 속성을 추가한 후 LinearLayout에 넣기만 하면 된다 또한 버튼 사이 간격은 layout_margin 로 조절한다 그렇다면 iso의 swift에선 어떻게 하면 될까? 약간 손이 더 가긴 하지만 어렵지 않다 편하게 사용하기 위해 UIView를 커스텀해서 만들어 보았다 버튼 크기를 맞춰주는 동시에 사이 간격, 여백도 줄것이다 class ButtonsView: UIView { private var mGap: CGFloat! private var mPadding: (left: CGFloat, top: CGFloat, right: CGFloat, bottom: .. 2017. 4. 25.
기준점을 중앙으로 Scale UIView 애니메이션 하기 swift 에서는 간단하게 뷰 애니메이션을 구현할 수 있다. 그런데 크기를 변경시키는 애니메이션에서는 주의 해야 할 점이 있다 바로 기준점이다 다음을 보자 let width = frame.width let height = frame.height frame.size.width = width * 0.2 frame.size.height = height * 0.2 UIView.animateWithDuration(1, delay: 0, options: [.CurveEaseInOut], animations: { self.frame.size.width = width self.frame.size.height = height }, completion: nil) 20% 작은 크기에서 원래 크기로 애니메이션 효과를 주었다 .. 2017. 3. 21.
이미지를 회전시키고 재사용하는 꿀팁 프로그램 안에서 같은 이미지를 여러곳에 사용할때! 그것도 회전시켜 사용할때! 원본 이미지의 회전된 이미지를 테이블안에 넣어 사용하면 간편하고 빠르다. 물론 메모리를 좀 차지하고, 요즘 디바이스도 워낙 좋아져 속도도 별반 차이 없겠지만 그래도 엄청 많은 곳에 엄청 빈번하게 회전 이미지를 사용할때는 유용하다ㅋ class RotateImageTable { let mSrcImage: UIImage let mUnit: CGFloat var mImages: [Int: UIImage] init(srcName: String, unit: CGFloat) { mSrcImage = UIImage(named: srcName)! //원본 이미지 mImages = [Int: UIImage]() //이미지 테이블 mUnit = u.. 2017. 2. 22.
쿼츠2D로 자유롭게 폰트 크기를 바꿔보자 직접 UIView를 상속해서 자신만의 UI객체를 만들때 쿼츠 2D를 사용한다 이때, 폰트 크기는 어떻게 바꿀수 있을까? NSString를 이용하면 간단하다. class MyView: UIView { var mFontAttrDic: [String: NSObject]! var mFont: UIFont! var mText: NSString! override func drawRect(rect: CGRect) { //문자 출력 mText.drawInRect(CGRectMake(0, 0, 100, 100), withAttributes: mFontAttrDic) } func intiFont() { //NSString 설정 mText = "테스트" //폰트 설정 mFont = UIFont(name: "SeoulNams.. 2016. 12. 19.
간단한 코딩으로 큰따음표("")로 묶인 CSV 파일 보기 CSV란 콤마(,)로 구분한 일련의 데이터들을 말한다. 예를 들면 아래와 같다. 고양이,강아지,곰,상어,토끼 100,20,55,177,83 이런 형식은 서로 호환 되지 않는 프로그램끼리 데이터들을 주고 받을때 유용하게 쓰인다. 또한 매우 간단하기 때문에 부담도 없다. 하지만 흔한 문제점 하나가 있다. 콤마가 있는 데이터가 있을 경우다. 56 10,000 1,500 300 890 2,360,050 74 금액을 표시할때 위와 같이 종종 단위 콤마를 쓰는데 이것을 CSV로 표현하면, 56,10,000,1,500,300,890,2,360,050,74 가 된다. 의도와는 다르게 데이터가 56 10 100 1 500 300 890 2 360 050 74 로 나누어져 버렸다 그래서 콤마가 있는 데이터를 큰따음표("".. 2016. 11. 14.
막대 그래프의 처음은 이렇게 가장 기본이 되는 그래프인 막대 그래프를 만들어 보자~ 위와 같이 막대와 그 수치를 넣을 것이다 예전에 올렸던 꺽은선 그래프를 살짝 변경해서 코딩했다. private Paint mLinePaint, mTextPaint; private float mTextGap; private int[] mPoints, mPointX, mPointY; private int mUnit, mOrigin, mDivide; public GraphView(Context context, AttributeSet attrs) { super(context, attrs); setTypes(context, attrs); } //그래프 옵션을 받는다 private void setTypes(Context context, AttributeSet .. 2016. 10. 24.
재귀 함수의 완벽한 이해 재귀 함수란 자기 자신을 다시 호출하는 함수를 말한다. 하지만 이러한 개념을 알고 있어도 직접 구현할려고 하면 헷갈린다. 특히, 분기를 위한 반복문이 함수내에 들어간다면 더더욱 그렇다. 거리 계산 다이어그램을 예로 해서 살펴보자 위 다이어그램의 숫자들은 각 점끼리의 거리이다. 즉, 총 거리는 숫자들을 모두 더한 13이고, D까지는 3 + 2 + 4 = 9가 된다. 재귀 함수로 코드화 해보자 private static int NAME_A = 0; private static int NAME_B = 1; private static int NAME_C = 2; private static int NAME_D = 3; private static int NAME_E = 4; private static int NAME.. 2016. 9. 26.